IAM Proxy

IAM Proxy — это промежуточный компонент, через который осуществляется доступ к защищаемым ресурсам. Он внедряется как шлюз между пользователями (или приложениями) и конечными системами.

Шаги работы IAM Proxy (по логину и паролю)

  1. Обращение пользователя к целевому ресурсу
  2. IAM Proxy (oauth2-proxy) перехватывает запрос
  3. Проверка валидности токена (JWT, access_code, cookie)
  4. Перенаправление к СУДИР (IdP)
  5. Аутентификация в IdP
  6. Перенаправление к IAM Proxy с code
  7. Обмен code на access_token или JWT
  8. Создание сессии для пользователя
  9. Пользователь получает доступ к запрашиваемому ресурсу

Шаги работы IAM Proxy (по mTLS)

  1. Обращение пользователя к целевому ресурсу
  2. IAM Proxy (oauth2-proxy) перехватывает запрос
  3. Анализ сертификата mTLS
  4. Проверка сертификата mTLS с сертификатом из CA (СУДИР)
  5. Создание сессии для пользователя
  6. Пользователь получает доступ к запрашиваемому ресурсу
  • Клиент - IAM Proxy - API
  • Прокси валидирует Bearer access_token
  • Проверяет scope, aud, exp
  • Отбрасывает заголовки, которые пришли от клиента, и сам выставляет X-User-Id в соответствии со своими настройками

Внутренняя структура IAM Proxy

  • TLS/mTLS Layer - обрабатывает сертификаты и проверяет их на корректность, если это mTLS, то subject идёт дальше в Session Manager и там автоматически создаёт сессию с данным subject-id
  • Session Manager - создаёт сессии, выходит из системы, обновляет токены
  • Token Validator - проверяет корректность токенов JWT, при необходимости уточняет у СУДИР валидность access_token при работе через opaque
  • Auth Flow Controller - отвечает за обработку code при OAuth 2.0, запрашивает у СУДИР необходимые разрешения и токены, инициирует создание сессии с полученными токенами и идентификаторами
  • Authorization Engine - Проверяет, какие именно доступы были получены от СУДИР и какие надо выдать, если это новый пользователь. Использует токены, локальные правила RBAC/ABAC. Сопоставляет полученные от СУДИР данные с внутренними моделями доступа.
  • Reverse Proxy Layer - Встраивает в итоговый запрос данные от Authorization Engine, удаляет ненужные заголовки, передаёт на рабочий сервер готовые данные добавляет заголовки X-User-*

Проблемы кибербезопасности

  1. Bypass Proxy
    Если сервер принимает запросы не только от IAM Proxy, то прямой запрос на порт из недоверенного источника может сымитировать работу IAM, из-за чего злоумышленник получит нелегитимный доступ к ресурсу
  2. Header Spoofing
    При первичной отправке заголовков злоумышленник подставляет аналогичные тем, что устанавливает IAM. Если IAM не удаляет все необходимые заголовки, то злоумышленник может получить расширенный доступ
  3. Применимы все уязвимости из OAuth 2.0
    OAuth 2.0